home *** CD-ROM | disk | FTP | other *** search
- Cze¶æ,
-
- Dnia 03-Wrz-98, Marek Jablonski rzek³ co nastêpuje:
-
- > To ma byæ animacja. Na razie jest tak, ¿e blitujê (co za wyra¿enie;) raz
- do
- > jednego a raz do drugiego rastportu i robiê ScrollVPort(). Z grubsza to
- > nawet mog³oby tak zostaæ gdyby nie by³o wolne bo te blity s± du¿e -
- 400x300
- > mniej wiêcej. Mi³ku? ;-)
-
- Proponujê nastêpuj±ce rozwi±zanie:
-
- 1. Wczytaæ dane zarówno obrazka jak i maski za pomoc± modu³ów, ze których
- korzysta³e¶ dotychczas.
- 2. Zarezerwowaæ nowy BitMap funkcj± AllocBitMap z flag± BMF_MINPLANES,
- podaj±c jako "friend" BitMap z ekranu na którym bêdziesz animowa³.
- 3. Skopiowaæ dane obrazka do bitmapu utworzonego w punkcie drugim za pomoc±
- BltBitMap(). W tym momencie dokona siê p2c i co tam jeszcze potrzebne (w
- zale¿no¶ci od g³êboko¶ci docelowej bitmapy).
- 4. Teraz bierzemy siê za maskê. Podobnie jak w punkcie drugim rezerwujemy
- nowy BitMap o stosownych parametrach, ale (UWAGA!) bez BMF_MINPLANES. Dziêki
- temu, nowy bitmap pozostanie planarny.
- 5. Kopiujemy maskê - BltBitMap() do bitmapy z punktu czwartego. Przy
- odrobinie szczê¶cia wyl±duje ona w fa¶cie.
- 6. Pozbywamy siê oryginalnych bitmap z pamiêci.
- 7. Od tej chwili blitujesz tylko pos³uguj±c siê tym co powy¿ej stworzy³e¶.
-
-
- Wbrew pozorom postêpowanie to jest dosyæ proste w implementacji - ka¿dy
- punkt to praktycznie jedna linia kodu. No i zadzia³a równie¿ poprawnie na
- komputerach bez CGFX, choæ oczywi¶cie bez zysków prêdko¶ciowych.
-
-
- Hej,
- Mi³ek
- --
- mailto:thorgal@amiga.com.pl | "Man in the Moon and other weird things" -
- http://wfmh.org.pl/~thorgal/ | see it at http://wfmh.org.pl/~thorgal/Moon/
-
-
-